/**
 * @Decision: 自定义表单校验
 * @Auth  hanzh
 */

/**
 * @param {string} path
 * @returns {Boolean}
 */
export function isExternal(path) {
	return /^(https?:|mailto:|tel:)/.test(path)
}

/**
 * @param {string} str
 * @returns {Boolean}
 */
export function validUsername(str) {
	const valid_map = ['admin', 'editor']
	return valid_map.indexOf(str.trim()) >= 0
}

/**
 * @param {string} phone
 * @returns {Boolean}
 */
export function isvalidPhone(phone) {
	if (phone != null && phone !== '') {
		const reg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/
		return reg.test(phone.trim())
	} else {
		return true
	}
}

export const validatePhone = (rule, value, callback) => {
	if (value === '' || value === null) {
		callback(new Error('请输入手机号'))
	} else if (!/^1[3456789]\d{9}$/.test(value)) {
		callback(new Error('电话格式不正确'))
	} else {
		callback()
	}
}

export const validatePhoneNotRequired = (rule, value, callback) => {
	if (value === '' || value === null) {
		callback()
	} else if (!/^1[3456789]\d{9}$/.test(value)) {
		callback(new Error('电话格式不正确'))
	} else {
		callback()
	}
}

/**
 * 空格校验，输入内容不能只有空格
 * @param rule
 * @param value
 * @param callback
 */
export const validateBlank = (rule, value, callback) => {
	const regu = '^[ ]+$'
	const re = new RegExp(regu)
	if (re.test(value)) {
		callback(new Error('该项不能只包含空格'))
	} else {
		callback()
	}
}

/**
 * 正整数校验
 * @param rule
 * @param value
 * @param callback
 */
export const isNumber = value => {
	const regu = /^[1-9]\d*$/
	const re = new RegExp(regu)
	return re.test(value)
}

export const validateEmail = (rule, value, callback) => {
	if (value === '' || value === null) {
		callback(new Error('请输入邮箱'))
	} else if (!/^[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}$/.test(value)) {
		callback(new Error('邮箱格式不正确'))
	} else {
		callback()
	}
}

// 验证是否为blob格式
export async function blobValidate(data) {
	try {
		const text = await data.text()
		JSON.parse(text)
		return false
	} catch (error) {
		return true
	}
}
